--- title: "01-内网穿透 ngork" created: 2026-01-09 tags: - 博客 --- # 内网穿透 ngork ## 什么是内网穿透? ### 通俗解释 想象你的电脑是一个“酒店房间”**(内网 IP,如** `127.0.0.1` **或** `192.168.x.x` **),而互联网是**“街道”。 - 别人在街道上(公网)是找不到你的房间号的,因为很多酒店都有“201房”。 - **内网穿透** 就像是雇了一个“接线员”(ngrok 服务器)。 - 接线员在街道上设了一个“服务台”**(公网 URL),别人只要访问这个服务台,接线员就会把信号通过一条**“专用电话线”(隧道)直接转接到你的房间里。 ### 核心作用 让外网(互联网)用户能够访问你本地电脑上运行的服务(如网站、数据库、SSH 等),而无需购买服务器或配置复杂的路由器端口转发。 ## ngrok 快速上手 ngrok 是目前最流行的反向代理工具,它能通过**一条命令**瞬间建立隧道。 ### 第一步:安装与配置 下载:去 [ngrok官网](https://ngrok.com/download/windows?tab=download) 下载对应的版本(Windows/Mac/Linux)。 ![[7-Blog/网络与自托管/assets/image-65748feb.png]] 解压:解压后得到一个可执行文件 ngrok (Windows下是 ngrok.exe)。 ![[7-Blog/网络与自托管/assets/image-547695d2.png]] 认证(必须): 注册并登录 ngrok dashboard。 复制你的 Authtoken ![[7-Blog/网络与自托管/assets/image-07148ca4.png]] 在终端(cmd/PowerShell)运行: ``` ngrok config add-authtoken <你的Token> ``` ### 第二步:常用命令速查 #### 暴露 Web 服务 (HTTP) 这是最常用的功能,将本地网站通过公网访问。 - **默认 80 端口:** ``` ngrok http 80 ``` - **指定其他端口 (例如 3000):** ``` ngrok http 3000 ``` ![[7-Blog/网络与自托管/assets/image-45ace144.png]] - **指定地区 (加速连接):** 如果你在亚洲,建议加上 `--region=ap` (Asia Pacific): ``` ngrok http 80 --region=ap ``` #### 暴露 TCP 服务 (SSH/远程桌面) 如果你需要远程连接数据库、SSH 或 Windows 远程桌面 (RDP)。 - **暴露 SSH (默认 22):** ``` ngrok tcp 22 ``` - **暴露 远程桌面 (默认 3389):** ``` ngrok tcp 3389 ``` *注意:TCP 隧道在免费版中会随机分配一个端口号,例如* `0.tcp.ap.ngrok.io:12345`*。* ## 进阶技巧与常见坑 ### 重点 1:路径问题 (Route vs Path) ngrok 只负责**打通端口**,不负责**跳转路径**。 - **错误理解**:我想直接穿透到 `/share/index`,所以输入 `ngrok http 8080/share/index`❌ (命令会报错)。 - **正确做法**: 1. 运行 `ngrok http 8080`。 2. 得到公网地址 `https://abcd.ngrok-free.app`。 3. 手动在浏览器访问 `https://abcd.ngrok-free.app/share/index`。 ### 重点 2:Host Header (网页报错 Invalid Host) 有些本地服务(如 Vue/React 开发服、WordPress)会检查请求的 Host 头,发现是 ngrok 的域名就会拒绝连接。 - **解决方案**:使用重写 Host 参数。 ``` ngrok http 8080 --host-header="rewrite" ``` *这会让你的本地程序以为请求是直接来自 localhost,从而允许访问。* ### 重点 3:流量监控 (Web Interface) ngrok 启动后,不要关闭终端。你可以在浏览器打开以下地址进入**管理面板**: - **Inspect**:查看所有经过隧道的请求(Request)和响应(Response)的详细内容,非常适合调试 API 回调(Webhook)。 - **Status**:查看当前隧道的连接状态。 ## 环境变量配置 (Windows) 为了避免每次都要 cd 到下载目录才能运行 ngrok: 1. 将 `ngrok.exe` 移动到一个固定目录(例如 `C:\Program Files\ngrok\`)。 2. 搜索 Windows 设置 -> **“编辑系统环境变量”**。 3. 点击 **“环境变量”** -> 在 **“系统变量”** 中找到 **Path** -> 点击 **“编辑”**。 4. 点击 **“新建”** -> 粘贴你存放 ngrok 的文件夹路径。 5. 重启终端,现在你在任何地方输入 `ngrok` 都可以运行了。